AWS Config の新コンソールを使うと高度なクエリ機能のサンプルコードが 16→58 に増えて超絶便利になった
AWS Config には現在のリソース設定などを SQL で取得できる高度なクエリ機能(Advanced queries)があります。
これまで 16 のサンプルクエリが提供されていたのですが、AWS Config の管理コンソールを新しいバージョンに切り換えると一気に 58 まで増えて、超絶便利になりました!
今回は執筆時点で提供されているサンプルクエリをざざっとご紹介します。
新コンソールの切り替え
AWS Config の管理コンソールが旧バージョンの場合、以下のリンクをクリックして新バージョンに切り替えてください。
サンプルクエリ一覧
名前 | 説明 |
---|---|
Count EC2 Instances | タイプごとのEC2インスタンスのカウント |
Count Non-compliant | 準拠していないリソースのカウント |
Count by compliant | Config ルール遵守状況ごとのリソースのカウント |
Active DynamoDB tables | アクティブなDynamoDBテーブルをリスト |
Availability zones for Load Balancer | 特定ロードバランサのアベイラビリティゾーン一覧 |
DynamoDB tables with disabled SSE | 暗号化が無効になっているDynamoDBテーブル一覧 |
Unused EBS | 使用されていないEBS一覧 |
Elastic IPs by Network Interface | 特定ENIに関連するEIP一覧 |
Elastic IPs by pool | プール内のEIP一覧 |
Elastic IPs with private IP address | 特定プライベートIPアドレスに紐づくEIP一覧 |
EC2 Instances within a VPC | 特定VPCに所属するEC2一覧 |
EC2 Instances by type | 特定インスタンスタイプのEC2一覧 |
EC2 Instances attached to Volume | 特定のEBSに接続されているEC2一覧 |
Currently running EC2 Instances | 現在実行中のEC2一覧 |
Currently stopped EC2 Instances | 現在停止中のEC2一覧 |
EC2 Instances by Subnet | 特定サブネット内のEC2一覧 |
EC2 Instances by Security Group | 特定セキュリティグループのあるEC2一覧 |
EC2 Instances by Network Interface | 特定ENIが含まれているEC2一覧 |
EC2 instances with a public DNS name | 特定パブリックDNS名を持つEC2一覧 |
EC2 Instances with a private DNS name | 特定プライベートDNS名を持つEC2一覧 |
EC2 Instances with monitoring state | 拡張モニタリングが無効のEC2一覧 |
EC2 Instances by AMI | 特定AMIを持つEC2一覧 |
EC2 Internet Gateway with state available | 利用可能な状態にあるIGW一覧 |
EC2 NetworkInterfaces by EC2 Instance | 特定インスタンスにアタッチされたENI一覧 |
EC2 NetworkInterfaces in-use | 使用中のENI一覧 |
EC2 NetworkInterfaces by IP address | 特定プライベートIPアドレスを持つENI一覧 |
Encrypted EC2 Volumes | 暗号化されているEBS一覧 |
In-use EC2 volumes | 使用中のEBS一覧 |
Not Encrypted EC2 Volumes | 暗号化されていないEBS一覧 |
EC2 Volumes by type | gp2タイプのEBS一覧 |
EC2 Volumes by size (GB) | 特定のサイズを持つEBS一覧 |
IAM Policy by IAM User | IAMユーザーにアタッチされているIAMポリシー一覧 |
IAM Users by creation date | 特定期間に作成されたIAMユーザーの一覧 |
IAM User by IAM Policy | 特定IAMポリシーがアタッチあれたIAMユーザーの一覧 |
EC2 Instances with User initiated state transition | StateTransitionReasonが"User initiated"であるEC2一覧 |
Lambda Function using nodejs6 | nodejs6 ランタイムを使用している Lambda 関数一覧 |
Load Balancers by Security Group | 特定セキュリティグループに関連づけられているELB一覧 |
Load Balancers by Subnet | 特定サブネットに所属するELB一覧 |
Load Balancers by VPC | 特定VPCに所属するELB一覧 |
Publicly accessible RDS | パブリックアクセス可能なRDS一覧 |
RDS DBInstances by Security Group | 特定セキュリティグループに関連づけられているRDS一覧 |
Publicly accessible RDS DBInstances | パブリックアクセス可能なRDS一覧 |
RDS DBInstances by backup (days) | バックアップ保持期間が指定日未満のRDS一覧 |
RDS DBInstances by database engine | 特定データベース・エンジンを持つRDS一覧 |
RDS DBInstances by DBInstanceClass | 特定インスタンスタイプのRDS一覧 |
RDS DBInstances by storage type | 特定ストレージタイプを持つRDS一覧 |
RDS DBInstances by StorageEncrypted | 暗号化ストレージを持つRDS一覧 |
RDS with database engine | 特定データベースエンジンの特定バージョンを実行しているRDS一覧 |
Non-compliant resources for Config rule | 特定のConfig Ruleに準拠していないリソース一覧 |
Non-compliant resources | 一つ以上のConfig Ruleに準拠していないリソース一覧 |
Security group sg-12345 | 特定セキュリティグループに関連するリソース一覧 |
Tagged with CostCenter 12345 | 特定タグが付いているリソース一覧 |
S3 buckets with no SSE | 暗号化が無効になっているS3バケット一覧 |
Security group allowing traffic from port | 特定ポートからのトラフィックを許可するセキュリティグループ一覧 |
Security group allowing traffic to port | 特定ポートへのトラフィックを許可するセキュリティグループ一覧 |
Security group supporting protocol | プロトコル"TCP"をサポートするセキュリティグループ一覧 |
Subnets for Load Balancer | 特定ELBの所属するサブネット一覧 |
S3 Buckets by versioning state | バージョニングが無効のS3バケット一覧 |
めっちゃ増えましたね!
シンプルなクエリも多いですが、AWS Config の場合、Aggregate 機能を使うことで複数のリージョン、複数のアカウントのリソースを取得できるので非常に便利です!
クエリを実行しても結果が得られない場合
該当するリソースがあるはずなのに、クエリ結果が得られない場合は、AWS Config の管理対象になっていない可能性が高いです。AWS Config 管理コンソールの Settings
を開き、対象のリソースが Resource types to record
に含まれているか確認してください。
含まれていない場合は、Edit
から追加しましょう。
クエリをカスタマイズする際の注意
サンプルクエリをベースにクエリをカスタマイズすると、より便利に利用できるかと思います。
ただし、一般的な SQL 文と同じように書けない部分もありますのでご注意ください。例えば以下のような制限がございます。
- キーワード
FROM
、AS
、JOIN
、DISTINCT
、HAVING
、ALL
はクエリではサポートされません - ワイルドカードはプロパティ値でのみサポートされており、プロパティキーではサポートされていません
...WHERE someKey LIKE 'someValue%'
はサポートされる...WHERE 'someKey%' LIKE 'someValue%'
はサポートされない
- サフィックスワイルドカードのみのサポートされる
...LIKE 'AWS::EC2::%'
はサポートされる...LIKE '%::EC2::Instance'
はサポートされない
- ワイルドカードの一致は、少なくとも3文字以上
...LIKE 'abc%'
はサポートされる...LIKE 'ab%'
はサポートされない
GROUP BY
には、単一のプロパティのみを含めることができる
その他、詳細は公式ドキュメントを参照ください。
さいごに
AWS Config の管理コンソールが新しくなっていたので、さわっていたところ「あれ?こんなにサンプルクエリ多かったっけ?」と思ったので記事にしてみました。
サンプルクエリが増えたことで、クエリの書き方など非常にイメージしやすくなったかと思います。
AWS Config の aggregator 機能を使うと、複数アカウント、複数リージョンの管理リソースに対しても Advanced queries で楽に欲しい情報が得られるかと思います。
以上!大阪オフィスの丸毛(@marumo1981)でした!